package com.doubao.wechat.service;

import com.doubao.common.result.Result;
import java.util.Map;

/**
 * 支付流程编排器接口
 * 负责协调整个支付流程，包括订单创建、支付、查询等
 */
public interface PaymentComposer {

    /**
     * 创建会员订单并发起支付
     * 
     * @param userId 用户ID
     * @param membershipId 会员ID
     * @param amount 支付金额（分）
     * @param payType 支付类型
     * @param clientIp 客户端IP
     * @return 支付订单信息
     */
    Result<Map<String, Object>> createMembershipOrder(Long userId, Long membershipId, 
                                                    Integer amount, String payType, String clientIp);

    /**
     * 查询订单并处理支付结果
     * 
     * @param outTradeNo 商户订单号
     * @return 订单信息
     */
    Result<Map<String, Object>> queryAndProcessOrder(String outTradeNo);

    /**
     * 处理支付成功回调
     * 
     * @param outTradeNo 商户订单号
     * @param transactionId 交易ID
     * @return 处理结果
     */
    Result<Void> handlePaymentCallback(String outTradeNo, String transactionId);

    /**
     * 取消支付订单
     * 
     * @param orderId 订单ID
     * @return 取消结果
     */
    Result<Map<String, Object>> cancelPayment(String orderId);
} 